package controlLayer;
import java.util.ArrayList;
import modelLayer.Vare;
import modelLayer.VareKartotek;
import modelLayer.VareGruppe;

/**
 * Kontroller klasse for  VareKartotekCTR.
 * 
 * @author Gruppe 2 
 * @version 1.0
 */
public class VareKartotekCTR
{
    
    private VareKartotek vk;

    /**
     * Konstruktøren af klassen VareKartotekCTR.
     */
    public VareKartotekCTR()
    {
        vk = VareKartotek.getInstance();
    }
    
    /**
     * Denne metode opretter et objekt af VareGruppe.
     * @param String placering
     * @param long stregkode
     * @param String beskrivelse
     * @param int pris
     */
    public void opretVareGruppe(String placering, long stregkode, String beskrivelse, int pris)
    {
        VareGruppe vg = new VareGruppe(placering, stregkode, beskrivelse, pris);
        vk.addVareGruppe(vg);
    }
    
    /**
     * Denne metode finder et objekt af VareGruppe via stregkoden.
     * @param long stregkode
     */
    public VareGruppe findVareGruppe(long stregkode)
    {
        return vk.findVareGruppe(stregkode);
    }
    
    /**
     * Denne metode opdaterer et objekt af klassen VareGruppe.
     * 
     * @param long stregkode
     * @param long nyStregkode
     * @param String placering
     * @param String beskrivelse
     * @param int pris
     */
    public void opdaterVareGruppe(long stregkode, String placering, long nystregkode, String beskrivelse, int pris)
    {
        vk.opdaterVareGruppe(stregkode, placering, nystregkode, beskrivelse, pris);
    }
    
        
    /**
     * Denne metode opretter et objekt af Vare.
     * Derefter tilføjes objektet af Vare til objektet af VareKartotek.
     * 
     * @param long stregkode
     * @param long id
     */
    public void opretVare(long id, long stregkode)
    {
        Vare v = new Vare(id);
        vk.addVare(v, stregkode);
    }
    
    /**
     * Denne metode finder et objekt af Vare i objektet af VareKartotek.
     * 
     * @param long stregkode
     * @param long id
     */
    public Vare findVare(long stregkode, long id)
    {
        return vk.findVare(stregkode, id);
       
    }
    
    /**
     * Denne Metode Opdaterer et objekt af Vare i objektet af VareKartotek.
     * 
     * @param long stregkode
     * @param long id
     * @param long nyId
     */
    public void opdaterVare(long stregkode, long id, long nyId)
    {
        vk.opdaterVare(stregkode, id, nyId);
    }

    /**
     * Denne Metode sletter et objekt af Vare i objektet af VareKartotek.
     * 
     * @param long id
     * @param long stregkode
     */
    public void fjernVare(long stregkode, long id)
    {
        vk.sletVare(stregkode, id);
    }
    
    /**
     * Denne Metode printer alle oplysninger der er i klassen VareKartotek.
     */
    public ArrayList<String> printVareKartotek()
    {
        return vk.printVareKartotek();
    }
    
    
}
